package com.sgb.kjwl.repository;

import com.sgb.kjwl.model.entity.AddShoppingCar;
import com.sgb.kjwl.model.entity.MaterialCompanyEntity;
import com.sgb.kjwl.model.entity.MaterialDetailEntity;
import com.sgb.kjwl.model.entity.STFilterEntity;
import com.sgb.kjwl.model.entity.SearchMaterialEntity;
import com.sgb.kjwl.model.entity.SearchMaterialEntity3;
import com.sgb.kjwl.model.entity.request.MaterialFilterJson;
import com.sgb.kjwl.model.entity.request.MaterialFilterJson3;
import com.sgb.kjwl.model.entity.supplier3.DictEntity3;
import com.sgb.kjwl.model.entity.user.SearchSTEntity;
import com.swgk.core.base.model.entity.ListResponse;
import com.swgk.core.base.model.entity.BaseEntity;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;

public interface MaterialRepertory extends BaseRepertory {

    Observable<BaseEntity<MaterialDetailEntity>> getMaterialDetail(String pid, String areacode);

    Observable<BaseEntity<MaterialCompanyEntity>> getMaterialCompany(String cid, String areacode);

    Observable<ListResponse<List<SearchMaterialEntity>>> getMaterialFilterList(int page, int size, int sort, Map map);

    Observable<BaseEntity> addShoppingCar(AddShoppingCar addShoppingCar);

    Observable<BaseEntity<String>> getCarCount(String areacode);

    Observable<BaseEntity> checkToken(Map map);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialFilterType(String id, String areacode);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialFilterName(String id, String areacode);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialFilterStore(String areacode);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialFilterBrand(String id, String areacod);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialFilterSpec(String id,  String areacod);

    Observable<BaseEntity<List<DictEntity3>>> getMaterialDistanceData();

    Observable<BaseEntity<List<DictEntity3>>> getMaterialPriceData();

    Observable<BaseEntity<ListResponse<List<SearchMaterialEntity>>>> getMaterialList(MaterialFilterJson materialFilterJson);

//    Observable<BaseEntity<ListResponse<List<SearchSTEntity>>>> getSTList(MaterialFilterJson materialFilterJson);

    Observable<BaseEntity<STFilterEntity>> getSTFilter(String areaCode);

    Observable<BaseEntity<ListResponse<List<SearchMaterialEntity3>>>> getMaterialList3(MaterialFilterJson3 materialFilterJson);
}
